package com.hontech.bv.ui.fragment.arm

import android.view.View
import android.widget.Button
import android.widget.EditText
import com.hontech.bv.R
import com.hontech.bv.conn.Device
import com.hontech.bv.conn.api.Arm
import com.hontech.bv.task.onClick
import com.hontech.bv.ui.window.*
import com.hontech.bv.ui.wrapDialog
import com.hontech.bv.utils.toInt

private fun showJawDialog() {
    ButtonDialog("夹爪测试",
        arrayOf(ButtonKv("打开") {
            wrapDialog("夹爪测试", "打开") {
                Arm.jawCtrl(0)
            }
        }, ButtonKv("关闭") {
            wrapDialog("夹爪测试", "关闭") {
                Arm.jawCtrl(1)
            }
        }, ButtonKv("释放") {
            wrapDialog("夹爪测试", "释放") {
                Arm.jawCtrl(2)
            }
        }))
        .show()
}

private fun showElevatorDialog() {
    FormDialog("升降测试", "测试", arrayOf(
        FormKV("距离", "0")
    )) {
        val position = it[0]
        wrapDialog("升降测试", "位置:${position}") {
            Arm.elevatorCtrl(position)
        }
    }.show()
}

private fun showArmCtrlDialog() {
    ButtonDialog("机械臂控制", arrayOf(
        ButtonKv("使能") {
            wrapDialog("机械臂控制", "使能") {
                Arm.armCtrl(0)
            }
        }, ButtonKv("失能") {
            wrapDialog("机械臂控制", "失能") {
                Arm.armCtrl(1)
            }
        }, ButtonKv("状态更新") {
            wrapDialog("机械臂控制", "状态更新") {
                Arm.armCtrl(2)
            }
        }, ButtonKv("校准") {
            wrapDialog("机械臂控制", "校准") {
                Arm.armCtrl(3)
            }
        }, ButtonKv("轨迹采集") {
            wrapDialog("机械臂控制", "轨迹采集") {
                Arm.armCtrl(4)
            }
        }, ButtonKv("测试轨迹") {
            wrapDialog("机械臂控制", "测试轨迹") {
                Arm.armCtrl(5)
            }
        }
    )).show()
}

private fun showArmRunDialog() {
    FormDialog("机械臂运动", "执行", arrayOf(
        FormKV("位置1", "90"),
        FormKV("位置2", "90"),
        FormKV("速度", "30")
    )) {
        val p1 = it[0]
        val p2 = it[1]
        val speed = it[2]
        wrapDialog("机械臂运动", "($p1,$p2) 速度:${speed}") {
            Arm.armRun(p1, p2, speed)
        }
    }.show()
}

private fun showRunCtrlDialog() {
    ButtonDialog("运动控制", arrayOf(
        ButtonKv("落杯1位置") {
            wrapDialog("运动控制", "落杯1位置") {
                Arm.doPosition(1)
            }
        }, ButtonKv("落杯2位置") {
            wrapDialog("运动控制", "落杯2位置") {
                Arm.doPosition(2)
            }
        }, ButtonKv("检杯位置") {
            wrapDialog("运动控制", "检杯位置") {
                Arm.doPosition(3)
            }
        }, ButtonKv("落珍珠位置") {
            wrapDialog("运动控制", "落珍珠位置") {
                Arm.doPosition(4)
            }
        }, ButtonKv("落冰位置") {
            wrapDialog("运动控制", "落冰位置") {
                Arm.doPosition(5)
            }
        }, ButtonKv("茶粉位置") {
            wrapDialog("运动控制", "茶粉位置") {
                Arm.doPosition(6)
            }
        }, ButtonKv("封膜位置") {
            wrapDialog("运动控制", "封膜位置") {
                Arm.doPosition(7)
            }
        }, ButtonKv("取物门2") {
            wrapDialog("运动控制", "取物门2") {
                Arm.doPosition(8)
            }
        }, ButtonKv("封膜并初始化") {
            wrapDialog("运动控制", "封膜") {
                Arm.doPosition(9)
            }
        }
    )).show()
}

class CtrlDelegate (view: View) {

    private val btnJawCtrl = view.findViewById<Button>(R.id.id_arm_btn_jaw_ctrl)
    private val btnElevator = view.findViewById<Button>(R.id.id_arm_btn_elevator_test)
    private val btnArmCtrl = view.findViewById<Button>(R.id.id_arm_btn_arm_ctrl)
    private val btnArmRun = view.findViewById<Button>(R.id.id_arm_btn_arm_run)
    private val btnFilm = view.findViewById<Button>(R.id.id_arm_btn_film_do)
    private val btnInit = view.findViewById<Button>(R.id.id_arm_btn_init)
    private val btnPick = view.findViewById<Button>(R.id.id_arm_btn_pick)
    private val btnRunCtrl = view.findViewById<Button>(R.id.id_arm_btn_run_ctrl)

    init {
        btnJawCtrl.setOnClickListener { showJawDialog() }
        btnElevator.setOnClickListener { showElevatorDialog() }
        btnArmCtrl.setOnClickListener { showArmCtrlDialog() }
        btnArmRun.setOnClickListener { showArmRunDialog() }
        btnRunCtrl.setOnClickListener { showRunCtrlDialog() }

        btnFilm.onClick {
            wrapDialog("测试封膜", "封膜") {
                Arm.doFilm()
            }
        }

        btnInit.onClick {
            wrapDialog("初始化", "初始化中") {
                Arm.doInit()
            }
        }

        btnPick.onClick {
            wrapDialog("取货", "取货中") {
                Arm.doPick()
            }
        }
    }


}